home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
QuickTime - The Beta Release
/
QuickTime - The Beta Release.iso
/
Programming Stuff
/
Interfaces
/
Movies Interfaces
/
ImageCompression.a
< prev
next >
Wrap
Text File
|
1991-09-06
|
29KB
|
645 lines
; Created: Wednesday, August 14, 1991 9:35 AM
;
; File: ImageCompression.a
;
; Assembler Interface to the Macintosh Libraries
; Copyright Apple Computer, Inc. 1990-1991
; All Rights Reserved
;
;___________________________________________________________________________
IF &TYPE('__IncludingImageCompression__') = 'UNDEFINED' THEN
__IncludingImageCompression__ SET 1
gestaltCompressionMgr EQU 'icmp'
; These are the bits that are set in the Component flags, and also in the codecInfo struct.
codecInfoDoes1 EQU $1 ; codec can work with 1-bit pixels
codecInfoDoes2 EQU $2 ; codec can work with 2-bit pixels
codecInfoDoes4 EQU $4 ; codec can work with 4-bit pixels
codecInfoDoes8 EQU $8 ; codec can work with 8-bit pixels
codecInfoDoes16 EQU $10 ; codec can work with 16-bit pixels
codecInfoDoes32 EQU $20 ; codec can work with 32-bit pixels
codecInfoDoesDither EQU $40 ; codec can do ditherMode
codecInfoDoesStretch EQU $80 ; codec can stretch to arbitrary sizes
codecInfoDoesShrink EQU $100 ; codec can shrink to arbitrary sizes
codecInfoDoesMask EQU $200 ; codec can mask to clipping regions
codecInfoDoesTemporal EQU $400 ; codec can handle temporal redundancy
codecInfoDoesDouble EQU $800 ; codec can stretch to double size exactly
codecInfoDoesQuad EQU $1000 ; codec can stretch to quadruple size exactly
codecInfoDoesHalf EQU $2000 ; codec can shrink to half size
codecInfoDoesQuarter EQU $4000 ; codec can shrink to quarter size
codecInfoDoesRotate EQU $8000 ; codec can rotate on decompress
codecInfoDoesHorizFlip EQU $10000 ; codec can flip horizontally on decompress
codecInfoDoesVertFlip EQU $20000 ; codec can flip vertically on decompress
codecInfoDoesSkew EQU $40000 ; codec can skew on decompress
codecInfoDoesBlend EQU $80000 ; codec can blend on decompress
codecInfoDoesWarp EQU $100000 ; codec can warp arbitrarily on decompress
codecInfoDoesRecompress EQU $200000 ; codec can recompress image without accumulating errors
codecInfoDepth1 EQU $1 ; compressed data at 1 bpp depth available
codecInfoDepth2 EQU $2 ; compressed data at 2 bpp depth available
codecInfoDepth4 EQU $4 ; compressed data at 4 bpp depth available
codecInfoDepth8 EQU $8 ; compressed data at 8 bpp depth available
codecInfoDepth16 EQU $10 ; compressed data at 16 bpp depth available
codecInfoDepth32 EQU $20 ; compressed data at 32 bpp depth available
codecInfoDepth24 EQU $40 ; compressed data at 24 bpp depth available
codecInfoDepth33 EQU $80 ; compressed data at 1 bpp monochrome depth available
codecInfoDepth34 EQU $100 ; compressed data at 2 bpp grayscale depth available
codecInfoDepth36 EQU $200 ; compressed data at 4 bpp grayscale depth available
codecInfoDepth40 EQU $400 ; compressed data at 8 bpp grayscale depth available
codecInfoStoresClut EQU $800 ; compressed data can have custom cluts
codecFlagUseImageBuffer EQU $1 ; (input) allocate buffer for whole image on decompress sequence
codecFlagUseScreenBuffer EQU $2 ; (input) allocate buffer for screen on decompress sequence for faster updates
codecFlagUpdatePrevious EQU $4 ; (input) udate previous buffer on compress sequence
codecFlagNoScreenUpdate EQU $8 ; (input) dont update screen, but do update image buffer if allocated
codecFlagWasCompressed EQU $10 ; (input) hint to compressor that image was previously compressed
codecFlagDontOffscreen EQU $20 ; return error instead of automatically going offscreen
codecFlagUpdatePreviousComp EQU $40 ; (input) udate previous buffer on compress sequence
codecFlagForceKeyFrame EQU $80 ; when sent to CompressSequenceFrame, forces that frame to be a key frame
codecFlagUsedImageBuffer EQU $8000 ; (output) indicates that image buffer was used on this decompress sequence
codecErr EQU -8960 ; the codec returned an error
noCodecErr EQU -8961 ; the specified codec could not be found
codecUnimpErr EQU -8962 ; this feature is not implemented by the specified codec
codecSizeErr EQU -8963
codecScreenBufErr EQU -8964 ; the screen buffer could not be allocated
codecImageBufErr EQU -8965 ; the image buffer could not be allocated
codecSpoolErr EQU -8966 ; the compressed data must be in memory (spooling did not work)
codecAbortErr EQU -8967 ; the operation was aborted by the progress proc
codecWouldOffscreenErr EQU -8968 ; an offscreen access would have been used, but wasn't allowed because codecFlagDontOffscreen was set
codecBadDataErr EQU -8969 ; compressed data was found to have inconsistencies
codecDataVersErr EQU -8970 ; compressed data was of a format version that codec couldn't handle
codecMinimumDataSize EQU 16384 ; The minimum data size for spooling in or out data
compressorComponentType EQU 'imco' ; the type for "Components" which compress images
decompressorComponentType EQU 'imdc' ; the type for "Components" which decompress images
codecCompletionSource EQU 1
codecCompletionDest EQU 2
codecProgressOpen EQU 0
codecProgressUpdatePercent EQU 1
codecProgressClose EQU 2
ProgressProcRecord RECORD 0
progressProc DS.L 1
progressRefCon DS.L 1
size EQU *
ENDR
CompletionProcRecord RECORD 0
completionProc DS.L 1
completionRefCon DS.L 1
size EQU *
ENDR
DataProcRecord RECORD 0
dataProc DS.L 1
dataRefCon DS.L 1
size EQU *
ENDR
FlushProcRecord RECORD 0
flushProc DS.L 1
flushRefCon DS.L 1
size EQU *
ENDR
;
; The ImageDescription is private data which is produced when an image or sequence
; is compressed. It fully describes the format of the compressed data.
ImageDescription RECORD 0
idSize DS.L 1 ; total size of ImageDescription including extra data ( CLUTs and other per sequence data
cType DS.L 1 ; what kind of codec compressed this data
resvd1 DS.L 1 ; reserved for apple use
resvd2 DS.W 1 ; reserved for apple use
dataRefIndex DS.W 1 ; set to zero
version DS.W 1 ; which version is this data
revisionLevel DS.W 1 ; what version of that codec did this
vendor DS.L 1 ; whose codec compressed this data
temporalQuality DS.L 1 ; what was the temporal quality factor
spatialQuality DS.L 1 ; what was the spatial quality factor
width DS.W 1 ; how many pixels wide is this data
height DS.W 1 ; how many pixels high is this data
hRes DS.L 1 ; horizontal resolution
vRes DS.L 1 ; vertical resolution
dataSize DS.L 1 ; if known, the size of data for this image descriptor
frameCount DS.W 1 ; number of frames this description applies to
name DS.B 32 ; name of codec ( in case not installed )
depth DS.W 1 ; what depth is this data (1-32) or ( 33-40 grayscale )
clutID DS.W 1 ; clut id or if 0 clut follows or -1 if no clut
size EQU *
ENDR
;
; The CodecInfo is the information returned as the codecInfo struct by a codec Component
; to the codec manager or to the caller. It is specific to the particular codec
; implementation and not to the codec type.
CodecInfo RECORD 0
typeName DS.B 32 ; name of the codec type i.e.: 'Apple Image Compression'
version DS.W 1 ; version of the codec data that this codec knows about
revisionLevel DS.W 1 ; revision level of this codec i.e: 0x00010001 (1.0.1)
vendor DS.L 1 ; Maker of this codec i.e: 'appl'
decompressFlags DS.L 1 ; codecInfo flags for decompression capabilities
compressFlags DS.L 1 ; codecInfo flags for compression capabilities
formatFlags DS.L 1 ; codecInfo flags for compression format details
compressionAccuracy DS.B 1 ; measure (1-255) of accuracy of this codec for compress (0 if unknown)
decompressionAccuracy DS.B 1 ; measure (1-255) of accuracy of this codec for decompress (0 if unknown)
compressionSpeed DS.W 1 ; ( millisecs for compressing 320x240 on base mac II) (0 if unknown)
decompressionSpeed DS.W 1 ; ( millisecs for decompressing 320x240 on mac II)(0 if unknown)
compressionLevel DS.B 1 ; measure (1-255) of compression level of this codec (0 if unknown)
resvd DS.B 1 ; pad
minimumHeight DS.W 1 ; minimum height of image (block size)
minimumWidth DS.W 1 ; minimum width of image (block size)
decompressPipelineLatency DS.W 1 ; in milliseconds ( for asynchronous codecs )
compressPipelineLatency DS.W 1 ; in milliseconds ( for asynchronous codecs )
privateData DS.L 1
size EQU *
ENDR
; Table used for fast dithering.
DitherTable RECORD 0
tag DS.L 1
seed DS.L 1
reserved DS.L 1
data DS.B 1
size EQU *
ENDR
; Name list returned by GetCodecNameList.
CodecNameSpec RECORD 0
codec DS.L 1
cType DS.L 1
typeName DS.B 32
name DS.L 1
size EQU *
ENDR
CodecNameSpecList RECORD 0
count DS.W 1
list DS.L 1
size EQU *
ENDR
; Matrix stuff
MatrixRecord RECORD 0
matrix DS.L 3
size EQU *
ENDR
FixedPoint RECORD 0
x DS.L 1
y DS.L 1
size EQU *
ENDR
FixedRect RECORD 0
left DS.L 1
top DS.L 1
right DS.L 1
bottom DS.L 1
size EQU *
ENDR
MACRO
_CodecManagerVersion
MOVEQ #$00,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetCodecNameList
MOVEQ #$01,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetCodecInfo
MOVEQ #$03,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetMaxCompressionSize
MOVEQ #$04,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetCompressionTime
MOVEQ #$05,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_CompressImage
MOVEQ #$06,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_FCompressImage
MOVEQ #$07,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_DecompressImage
MOVEQ #$08,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_FDecompressImage
MOVEQ #$09,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_CompressSequenceBegin
MOVEQ #$0A,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_CompressSequenceFrame
MOVEQ #$0B,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_DecompressSequenceBegin
MOVEQ #$0D,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_DecompressSequenceFrame
MOVEQ #$0E,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetDSequenceMatrix
MOVEQ #$10,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetDSequenceMatte
MOVEQ #$11,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetDSequenceMask
MOVEQ #$12,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetDSequenceTransferMode
MOVEQ #$13,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetDSequenceDataProc
MOVEQ #$14,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetDSequenceAccuracy
MOVEQ #$34,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetDSequenceSrcRect
MOVEQ #$35,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetDSequenceImageBuffer
MOVEQ #$15,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetDSequenceScreenBuffer
MOVEQ #$16,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetCSequenceQuality
MOVEQ #$17,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetCSequencePrev
MOVEQ #$18,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetCSequenceFlushProc
MOVEQ #$33,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetCSequenceKeyFrameRate
MOVEQ #$36,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetCSequencePrevBuffer
MOVEQ #$19,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_CDSequenceBusy
MOVEQ #$1A,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_CDSequenceEnd
MOVEQ #$1B,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetCompressedImageSize
MOVEQ #$1C,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetSimilarity
MOVEQ #$1D,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetImageDescriptionCTable
MOVEQ #$1E,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetImageDescriptionCTable
MOVEQ #$1F,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetImageDescriptionExtension
MOVEQ #$20,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetImageDescriptionExtension
MOVEQ #$21,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_FindCodec
MOVEQ #$23,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_CompressPicture
MOVEQ #$24,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_FCompressPicture
MOVEQ #$25,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_CompressPictureFile
MOVEQ #$26,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_FCompressPictureFile
MOVEQ #$27,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetPictureFileHeader
MOVEQ #$28,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_DrawPictureFile
MOVEQ #$29,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_DrawTrimmedPicture
MOVEQ #$2E,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_DrawTrimmedPictureFile
MOVEQ #$2F,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_MakeThumbnailFromPicture
MOVEQ #$2A,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_MakeThumbnailFromPictureFile
MOVEQ #$2B,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_MakeThumbnailFromPixMap
MOVEQ #$2C,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_TrimImage
MOVEQ #$2D,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_ConvertImage
MOVEQ #$30,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_MakeDitherTable
MOVEQ #$31,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_DisposeDitherTable
MOVEQ #$32,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetCompressedPixMapInfo
MOVEQ #$37,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_SetCompressedPixMapInfo
MOVEQ #$38,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_GetMatrixType
MOVEQ #$14,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_CopyMatrix
MOVEQ #$20,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_EqualMatrix
MOVEQ #$21,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_SetIdentityMatrix
MOVEQ #$15,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_TranslateMatrix
MOVEQ #$19,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_TranslateMatrixTo
MOVEQ #$1A,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_RotateMatrix
MOVEQ #$16,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_ScaleMatrix
MOVEQ #$17,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_SkewMatrix
MOVEQ #$18,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_TransformFixedPoints
MOVEQ #$22,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_TransformPoints
MOVEQ #$23,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_TransformFixedRect
MOVEQ #$24,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_TransformRect
MOVEQ #$25,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_TransformRgn
MOVEQ #$39,D0
DC.W $AAA3 ; TB 02A3
ENDM
MACRO
_InverseMatrix
MOVEQ #$1C,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_ConcatMatrix
MOVEQ #$1B,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_RectMatrix
MOVEQ #$1E,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_MapMatrix
MOVEQ #$1D,D0
DC.W $ABC2 ; TB 03C2
ENDM
MACRO
_AlignMatrix
MOVEQ #$1F,D0
DC.W $ABC2 ; TB 03C2
ENDM
ENDIF ; ...already included